"""
    Canny边缘检测方法常被誉为边缘检测的最优方法。
    首先，Canny算法的输入端应为图像的二值化结果，接收到二值化图像后，需要按照如下步骤进行：
    1.高斯滤波。
    2.计算图像的梯度和方向。
    3.非极大值抑制。
    4.双阈值筛选。
"""

import cv2

img = cv2.imread("../images/lena.png")

img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

img_binary = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]

img_gaussian = cv2.GaussianBlur(img_binary, (5, 5), 3)

img_canny = cv2.Canny(img_gaussian,
                      50,  # 阈值1
                      150  # 阈值2
                      )
cv2.imshow("img_canny", img_canny)
cv2.waitKey(0)